package com.aizuda.boot.modules.business.negotiation.service;

import com.aizuda.bpm.engine.core.FlowCreator;

/**
 * 合同协商任务服务接口
 * 用于处理协商流程中的任务相关操作
 */
public interface ContractNegotiationTaskService {
    
    /**
     * 处理协商流程任务认领
     * 当认领的任务属于子流程(process_type=child)时，将认领用户添加到协商参与者表中
     * 
     * @param taskId 任务ID
     * @param flowCreator 流程创建者（当前认领任务的用户）
     * @return 是否处理成功
     */
    boolean handleNegotiationTaskClaim(Long taskId, FlowCreator flowCreator);
    
    /**
     * 根据instanceId查询对应的contractId
     * 
     * @param instanceId 流程实例ID
     * @return 合同ID，如果没有找到返回null
     */
    Integer getContractIdByInstanceId(Long instanceId);
    
    /**
     * 根据taskId和contractId查找对应的协商节点实例
     * 
     * @param taskId 任务ID
     * @param contractId 合同ID
     * @return 协商节点实例ID，如果没有找到返回null
     */
    Integer findNegotiationNodeInstanceId(Long taskId, Integer contractId);
    
    /**
     * 将用户添加到协商参与者表中
     * 
     * @param contractId 合同ID
     * @param nodeInstanceId 节点实例ID
     * @param userId 用户ID
     * @return 是否添加成功
     */
    boolean addUserToNegotiationParticipant(Integer contractId, Integer nodeInstanceId, Long userId);
} 